// 需求管理页面JS模块
layui.define(['table', 'form', 'layer', 'jquery'], function(exports) {
    var table = layui.table;
    var form = layui.form;
    var layer = layui.layer;
    var $ = layui.jquery;
    
    var requirements = {
        // 初始化需求管理
        init: function() {
            this.initTable();
            this.bindEvents();
            this.loadSources();
        },
        
        // 初始化表格
        initTable: function() {
            table.render({
                elem: '#requirement-table',
                url: '/devc/api/requirements/list',
                page: true,
                cols: [[
                    {field: 'id', title: 'ID', width: 80, sort: true},
                    {field: 'name', title: '需求名称', width: 300},
                    {field: 'source', title: '来源', width: 150},
                    {field: 'status', title: '状态', width: 100, templet: '#statusTpl'},
                    {field: 'createTime', title: '创建时间', width: 180, sort: true},
                    {title: '操作', width: 150, align: 'center', toolbar: '#table-operation'}
                ]],
                parseData: function(res) {
                    return {
                        "code": res.code,
                        "msg": res.msg,
                        "count": res.count,
                        "data": res.data
                    };
                }
            });
        },
        
        // 绑定事件
        bindEvents: function() {
            // 表格工具条事件
            table.on('tool(requirement-table)', function(obj){
                var data = obj.data;
                if(obj.event === 'edit'){
                    requirements.showForm('编辑需求', data);
                } else if(obj.event === 'del'){
                    requirements.deleteRequirement(data.id, obj);
                }
            });
            
            // 新增需求按钮
            $('#add-requirement').on('click', function(){
                requirements.showForm('新增需求');
            });
            
            // 搜索按钮
            $('#search-btn').on('click', function(){
                table.reload('requirement-table', {
                    where: {
                        status: $('select[name=status]').val(),
                        source: $('select[name=source]').val(),
                        search: $('input[name=search]').val()
                    }
                });
            });
            
            // 导出按钮
            $('#export-requirements').on('click', function(){
                requirements.exportData();
            });
            
            // 导入按钮
            $('#import-requirements').on('click', function(){
                requirements.importData();
            });
            
            // 表单提交事件
            form.on('submit(save-requirement)', function(data){
                requirements.saveRequirement(data.field);
                return false;
            });
        },
        
        // 加载来源列表
        loadSources: function() {
            // 从现有数据中提取来源
            var sources = ['客户反馈', '内部讨论', '市场调研', '竞品分析', '用户调研'];
            var select = $('select[name=source]');
            
            sources.forEach(function(source){
                select.append('<option value="' + source + '">' + source + '</option>');
            });
            
            form.render('select');
        },
        
        // 显示表单
        showForm: function(title, data) {
            // 重置表单
            form.val('requirement-form', {
                'id': '',
                'name': '',
                'source': '',
                'description': '',
                'status': '待处理'
            });
            
            // 如果是编辑，填充表单数据
            if(data){
                form.val('requirement-form', data);
            }
            
            // 打开表单弹窗
            layer.open({
                type: 1,
                title: title,
                area: ['500px', '400px'],
                content: $('#requirement-form'),
                btn: ['确定', '取消'],
                success: function(layero, index){
                    form.render();
                },
                yes: function(index, layero){
                    $('button[lay-filter="save-requirement"]').click();
                },
                btn2: function(index, layero){
                    layer.close(index);
                }
            });
        },
        
        // 保存需求
        saveRequirement: function(data) {
            var url = data.id ? '/devc/api/requirements/' + data.id : '/devc/api/requirements';
            var method = data.id ? 'POST' : 'POST';
            
            $.ajax({
                url: url,
                type: method,
                data: data,
                success: function(res) {
                    if (res.code === 0) {
                        layer.msg('保存成功');
                        layer.closeAll('page');
                        table.reload('requirement-table');
                    } else {
                        layer.msg(res.msg || '保存失败');
                    }
                },
                error: function() {
                    layer.msg('网络错误，请检查连接');
                }
            });
        },
        
        // 删除需求
        deleteRequirement: function(id, obj) {
            layer.confirm('确定删除此需求吗？', function(index){
                $.ajax({
                    url: '/devc/api/requirements/' + id + '/delete',
                    type: 'POST',
                    success: function(res) {
                        if (res.code === 0) {
                            obj.del();
                            layer.msg('删除成功');
                        } else {
                            layer.msg(res.msg || '删除失败');
                        }
                    },
                    error: function() {
                        layer.msg('网络错误，请检查连接');
                    }
                });
                layer.close(index);
            });
        },
        
        // 导出数据
        exportData: function() {
            layer.msg('导出功能待实现');
        },
        
        // 导入数据
        importData: function() {
            layer.msg('导入功能待实现');
        }
    };
    
    exports('requirements', requirements);
});